import moment from "moment-timezone";
import i18n from "@/i18n";
import { useStore } from "@/stores";


let isIos: boolean;
// #ifdef APP-PLUS
isIos = uni.getSystemInfoSync().platform == "ios";
// #endif
export function goTo(url: string, title: string = "") {
	
	uni.navigateTo({
		url,
		success: () => {
			if (title) {
				setTimeout(() => {
					uni.showToast({
						title,
						icon: "none",
					});
				});
			}
		},
	});
}
export function goToTab(url: string) {
	uni.switchTab({
		url: url,
	});
}
export function goBack(delta: number, title: string = "") {
	const canNavBack = getCurrentPages();
	if (canNavBack && canNavBack.length > 1) {
		uni.navigateBack({
			delta,
			success: () => {
				if (title) {
					setTimeout(() => {
						uni.showToast({
							title,
							icon: "none",
						});
					}, 100);
				}
			},
		});
	} else {
		uni.reLaunch({
			url: "/pages/index/index",
		});
	}
}
export function goReLaunch(url: string, title: string = "") {
	uni.reLaunch({
		url,
		success: () => {
			if (title) {
				setTimeout(() => {
					uni.showToast({
						title,
						icon: "none",
					});
				}, 100);
			}
		},
	});
}
export function goRedirectTo(url: string, title: string = "") {
	uni.redirectTo({
		url: url,
		success: () => {
			if (title) {
				setTimeout(() => {
					uni.showToast({
						title,
						icon: "none",
					});
				}, 100);
			}
		},
	});
}
export function copyText(data: string) {
	uni.setClipboardData({
		data,
		showToast: false,
		success: () => {
			uni.showToast({
				title:i18n.global.t('common.copySuccess'),
				icon: "none",
			});
		},
	});
}
// 时间进制
export function formattingTime(time: string | number, type: number=0): string {
	// 从 localStorage 中获取 UTC 偏移值，默认值为 0
	const utcOffsetMinutes = Number(uni.getStorageSync("utcOffsetMinutes") || 0);

	// 通用的格式化函数
	const formatTime = (time: moment.Moment, format: string): string =>
		time.utc().utcOffset(utcOffsetMinutes).format(format);

	// 类型为 1，返回 "YYYY/MM/DD"
	if (type === 1) {
		return formatTime(moment(time), "YYYY/MM/DD");
	}

	// 类型为 2，聊天时间格式
	if (type === 2) {
		const currentDate = moment()
			.utc()
			.utcOffset(utcOffsetMinutes)
			.startOf("day"); // 当前日期（仅日期部分）
		const messageDate = moment(time)
			.utc()
			.utcOffset(utcOffsetMinutes)
			.startOf("day"); // 消息日期（仅日期部分）

		const diffDays = currentDate.diff(messageDate, "days"); // 当前日期与消息日期的天数差
		const hours = moment(time).utc().utcOffset(utcOffsetMinutes).hours(); // 小时
		const minutes = moment(time).utc().utcOffset(utcOffsetMinutes).minutes(); // 分钟（补零处理）
		const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;

		// 今天的消息
		if (diffDays === 0) {
			return `${hours}:${formattedMinutes}`; // 返回时和分
		}

		// 昨天的消息
		if (diffDays === 1) {
			return `昨天${hours}:${formattedMinutes}`;
		}

		// 最近一周的消息
		if (diffDays <= 7) {
			return `${diffDays}天前`;
		}

		// 更早的消息
		return formatTime(moment(time), "YYYY/MM/DD");
	}

	// 默认格式化返回 "YYYY/MM/DD HH:mm:ss"
	return formatTime(moment(time), "HH:mm:ss YYYY/MM/DD");
}

// 下载文件
export function handleDownload(url: string): void {
	/*#ifdef APP-PLUS*/
	openExternalBrowser(url);
	/*#endif*/
	/*#ifdef H5*/
	window.location.href = url;
	/*#endif*/
}

// 打开外部浏览器
const openExternalBrowser = function (url: string) {
	// 判断平台
	const platform = uni.getSystemInfoSync().platform;
	if (platform === "android") {
		// 在Android平台上使用外部浏览器
		plus.runtime.openURL(url, function (error: any) {
			console.error("打开外部浏览器出错: " + error.message);
		});
	} else if (platform === "ios") {
		// 在iOS平台上使用外部浏览器
		plus.runtime.openWeb(url);
	} else {
		// 其他平台可能不支持直接打开外部浏览器，可以尝试使用 uni.navigateTo
		uni.navigateTo({
			url: "/pages/chat/filePreview?attachmentUrl=" + encodeURIComponent(url),
		});
	}
};

// 获取字符串的后 4 个字符
export const getLastFourChars = (str: string): string => {
	if (!str) {
		return "";
	}
	return str.length <= 4 ? str : str.slice(-4);
};
// 校验邮箱
export const validateEmail = (email: string): boolean => {
	const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
	if (!emailPattern.test(email)) {
		uni.showToast({
			title: i18n.global.t('common.invalidEmail'), icon: "none"
		})
		return false
	}
	return true
};


/**
 * 获取当前时间到当天 00:00 的时间戳（考虑时区偏移）
 * @param utcOffsetMinutes 时区偏移值（分钟）
 * @returns 时间戳（毫秒）
 */
export const getTimestampToMidnight = (): number => {
	const utcOffsetMinutes = Number(uni.getStorageSync("utcOffsetMinutes") || 0);
	// 获取当前时间，并应用时区偏移
	const now = moment().utcOffset(utcOffsetMinutes);

	// 获取当天的 00:00 时间（考虑时区偏移）
	const midnight = now.clone().add(1, 'day').startOf('day');

	// 计算倒计时时间差（毫秒）
	const countdown = midnight.diff(now);

	return countdown;
};

// 中间省略...
export const interceptFn = (text:string, num:number): string => {
	if (!text) {
		return "";
	}
	var startText = text.slice(0, (num || 5));
	var endText = text.slice(text.length - (num || 5), text.length);
	return startText + "..." + endText;
};


